<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>

  <style>
    input {
      display: block;
      padding: 0 20px;
      outline: none;
      border: 1px solid #ccc;
      width: 150px;
      height: 40px;
      transition: all 300ms;
    }


    input:valid {
      border-color: green;
      box-shadow: inset 5px 0 0 green;
    }

    input:invalid {
      border-color: red;
      box-shadow: inset 5px 0 0 red;
    }
  </style>
</head>

<body>
  <form>
    <input type="text" placeholder="请输入你的手机" pattern="^1[3456789]\d{9}$" required>
    <button type="submit">提交</button>
  </form>

  <script>
    // 1、: valid 用于匹配输入值为合法的元素
    // 2、: invalid 用于匹配输入值为非法的元素
    // 3、required 属性规定必需在提交之前填写输入字段
    // 4、pattern 属性规定用于验证输入字段的正则表达式

    // : valid /: invalid 选择器用于在表单元素中的值是合法 / 非法时设置指定样式。

    // 注意： : valid /: invalid 选择器只作用于能指定区间值的元素，例如 input 元素中的 min 和 max 属性，及正确的 email 字段, 合法的数字字段等。

    // required 属性适用于以下 < input > 类型：text, search, url, telephone, email, password, date pickers, number, checkbox, radio 以及 file。当然textarea也可以。
  </script>
</body>

</html>